#include "ThreadPool.hpp"
using namespace ThreadPoolModule;
#include "Task.hpp"

using task_t = std::function<void(const std::string &)>;

int main()
{
    std::shared_ptr<ThreadPool<task_t>> threadpool = std::make_shared<ThreadPool<task_t>>();

    threadpool->Start();
    sleep(2);
    int cnt = 10;
    while (cnt--)
    {
        threadpool->Equeue(test);
        sleep(1);
    }
    sleep(3);
    LOG(LogLevel::INFO) << "结束线程池";
    threadpool->Stop();
    sleep(3);
    threadpool->Wait();
    return 0;
}

// class Sig
// {
//     static Sig _instance;

// private:
//     Sig() {}
//     Sig(const Sig &) = delete;
//     Sig &operator=(const Sig &) = delete;

// public:
//     static Sig *Getinstance()
//     {
//         return &_instance;
//     }
// };

// // class Sig
// {
//     static Sig *_instance;

// private:
//     Sig() {}
//     Sig(const Sig &) = delete;
//     Sig &operator=(const Sig &) = delete;

// public:
//     static Sig *Getinstance()
//     {
//         if (_instance == nullptr)
//         {
//             std::mutex mutex.lock() //进行加锁
//             if (_instance == nullptr)
//             {
//                 _instance = new Sig();
//             }
//         }

//         return _instance;
//     }
// };
// Sig *Sig::_instance = nullptr;